﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Ex1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        List<PHIM> DSFILM = new List<PHIM>()
        {
            new PHIM{MAFILM="FILM01", TENFILM="HARRY POTTER VA CHIEC COC LUA", THELOAI="TL01", SOTAP=2},
            new PHIM{MAFILM="FILM02", TENFILM="BAC SY NHAN AI", THELOAI="TL02", SOTAP=20},
            new PHIM{MAFILM="FILM03", TENFILM="HON MA TRONG DEM", THELOAI="TL03", SOTAP=1},
            new PHIM{MAFILM="FILM04", TENFILM="KIEP VO BE", THELOAI="TL02", SOTAP=2},
            new PHIM{MAFILM="FILM05", TENFILM="PETTER SPAN", THELOAI="TL01", SOTAP=2},
            new PHIM{MAFILM="FILM06", TENFILM="SPIDER MAN", THELOAI="TL01", SOTAP=2},
            new PHIM{MAFILM="FILM07", TENFILM="MUA MUA HE", THELOAI="TL02", SOTAP=50},
            new PHIM{MAFILM="FILM08", TENFILM="CAN NHA SO 13", THELOAI="TL03", SOTAP=30},
            new PHIM{MAFILM="FILM09", TENFILM="TRUONG DUA", THELOAI="TL04", SOTAP=2},
            new PHIM{MAFILM="FILM10", TENFILM="CHIEC KHAN TAY", THELOAI="TL02", SOTAP=10},
            new PHIM{MAFILM="FILM11", TENFILM="NGUOI IZA", THELOAI="TL01", SOTAP=30},
            new PHIM{MAFILM="FILM12", TENFILM="TELEPORT", THELOAI="TL01", SOTAP=10}
        };
        List<THELOAI> DSTL = new List<THELOAI>() {
            new THELOAI{MATHELOAI="TL01", TENTHELOAI = "VIEN TUONG"},
            new THELOAI{MATHELOAI="TL02", TENTHELOAI = "TINH CAM"},
            new THELOAI{MATHELOAI="TL03", TENTHELOAI = "KINH DI"},
            new THELOAI{MATHELOAI="TL04", TENTHELOAI = "HANH DONG"},
            new THELOAI{MATHELOAI="TL05", TENTHELOAI = "18+"},
        };

        private void button1_Click(object sender, EventArgs e)
        {
            DataTable tb = new DataTable();
            tb.Columns.Add("Mã film", typeof(string));
            tb.Columns.Add("Tên film", typeof(string));
            tb.Columns.Add("Thể loại", typeof(string));
            tb.Columns.Add("Số tập", typeof(int));
            var query = from f in DSFILM
                        where f.THELOAI=="TL01"
                        orderby f.TENFILM
                        select f;

            foreach (var item in query)
            {
                tb.Rows.Add(item.MAFILM, item.TENFILM, item.THELOAI, item.SOTAP);
            }

            dataGridView1.DataSource = tb;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            DataTable tb = new DataTable();
            tb.Columns.Add("Mã Thể loại", typeof(string));
            tb.Columns.Add("Thể loại", typeof(string));
            tb.Columns.Add("Tên film", typeof(string));
            tb.Columns.Add("Số tập", typeof(int));
            var query = from f in DSFILM
                        join tl in DSTL on f.THELOAI equals tl.MATHELOAI
                        orderby tl.TENTHELOAI
                        select new {tl.MATHELOAI,tl.TENTHELOAI , f.TENFILM, f.SOTAP };

            foreach (var item in query)
            {
                tb.Rows.Add(item.MATHELOAI,item.TENTHELOAI, item.TENFILM, item.SOTAP);
            }

            dataGridView1.DataSource = tb;
        }
        
        private void button3_Click(object sender, EventArgs e)
        {
            DataTable tb = new DataTable();
            tb.Columns.Add("Mã Thể loại", typeof(string));
            tb.Columns.Add("Thể loại", typeof(string));
            tb.Columns.Add("Tên film", typeof(string));
            tb.Columns.Add("Số tập", typeof(int));
            var query = from tl in DSTL
                        join f in DSFILM on tl.MATHELOAI equals f.THELOAI into qh

                        from q in qh.DefaultIfEmpty()
                        select new
                        {
                            tl.MATHELOAI,
                            tl.TENTHELOAI,
                            TENFILM = (q == null) ? "Chua co film" : q.TENFILM,
                            SOTAP = (q == null) ? 0 : q.SOTAP
                        };

            foreach (var item in query)
            {
                tb.Rows.Add(item.MATHELOAI, item.TENTHELOAI, item.TENFILM, item.SOTAP);
            }

            dataGridView1.DataSource = tb;
        }

        private void button4_Click(object sender, EventArgs e)
        {
            DataTable tb = new DataTable();
            tb.Columns.Add("Mã Thể loại", typeof(string));
            tb.Columns.Add("Thể loại", typeof(string));
            tb.Columns.Add("Số lương film", typeof(int));
            tb.Columns.Add("Số tập", typeof(int));
            var query = from tl in DSTL
                        join f in DSFILM on tl.MATHELOAI equals f.THELOAI
                        group f by new {tl.MATHELOAI, tl.TENTHELOAI} into g
                        select new
                        {
                            g.Key.MATHELOAI,
                            g.Key.TENTHELOAI,
                            SOLUONGFILM=g.Count(),
                            TONGSOTAP=g.Sum(tt=>tt.SOTAP)
                            
                        };

            foreach (var item in query)
            {
                tb.Rows.Add(item.MATHELOAI, item.TENTHELOAI , item.SOLUONGFILM, item.TONGSOTAP);
            }

            dataGridView1.DataSource = tb;
        }
    }

    class PHIM
    {
        public string MAFILM { get; set; }
        public string TENFILM { get; set; }
        public string THELOAI { get; set; }
        public int SOTAP { get; set; }
    }
    class THELOAI
    {
        public string MATHELOAI { get; set; }
        public string TENTHELOAI { get; set; }
    }



}
